/*********************************************************************************
  *Author:              yujiahang
  *Date:                2021.04.08
  *Description:         实现有等级有颜色的log输出
**********************************************************************************/
#ifndef __LOG_H__
#define __LOG_H__
#include <stdio.h>

#define NONE        "\e[0m"
#define RED         "\e[31m"
#define YELLOW      "\e[33m"
#define BLUE        "\e[34m"

// 普通log输出 白色
#define LOG_INFO(format, ...)                                                                               \
    printf("[INFO][%s][%s][%d]" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); 

// 警告log输出 黄色
#define LOG_WARN(format, ...)                                                                               \
do                                                                                                          \
{                                                                                                           \
    printf(YELLOW "[WARN][%s][%s][%d]" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);     \
    printf(NONE);                                                                                           \
} while(0)

// 错误log输出 红色
#define LOG_ERR(format, ...)                                                                                \
do                                                                                                          \
{                                                                                                           \
    printf(RED "[ERR][%s][%s][%d]" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);         \
    printf(NONE);                                                                                           \
} while(0)

#ifdef DEBUG
// 调试log输出 蓝色 可通过宏定义DEBUG开关
#define LOG_DEBUG(format, ...)                                                                              \
do                                                                                                          \
{                                                                                                           \
    printf(BLUE "[DEBUG][%s][%s][%d]" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);      \
    printf(NONE);                                                                                           \
} while(0)
#else
    #define LOG_DEBUG(format, ...)  
#endif

#endif
